package problem_everyday;

public class D2025_07_04_P3307 {
    public char kthCharacter(long k, int[] operations) {
        if(k==1) return 'a';
        int index = -1;
        long count = 1;
        while(count < k){
            index ++ ;
            count = count * 2;
        }
        count = count / 2;
        // count 对应 operations[index] 操作之前 序列的长度
        int back_num = 0;
        for(int i=index; i>=0 && k>1; i--){
            // 如果k位于序列的后半段 且 operations[i]为1 ，说明对应后移一维
            if(k > count && operations[i] == 1){
                back_num ++;
            }
            // 对应地，如果位于序列后半段，则应该映射前半段地k-count处
            if(k > count) k = k - count;
            // 更新序列半长
            count = count / 2;
        }
        back_num = back_num % 26;
        return (char) ('a' + back_num);
    }
}
